;Programa, kuri veda simboli eilut ir atspausdina jos simboli ASCII kodus eioliktainiu pavidalu.
;made by saldat`as

.MODEL small
.STACK 100h
.DATA
msgIvesk	DB 'Iveskite eilute:$'
msgIsvesk  	DB, 13, 10, "Isvestis:$"
msgtuscia  	DB 13, 10, '$'
msgklaida  	DB, 13, 10, 'Jus nieko neivedet$'
buf	DB 255
	DB 0
	DB 255 DUP(?)
.CODE
Start:
	mov ax, @data
	mov ds, ax

	mov ah, 09h
	lea dx, msgIvesk
	int 21h

	mov ah, 0Ah
	mov dx, offset buf
	int 21h

	mov ah, 09h
	lea dx, msgtuscia
    	int 21h

	mov ah, 09h
	lea dx, msgIsvesk
	int 21h

	mov si, offset buf+1
	xor cx, cx
	lodsb
	cmp al, 0
	je klaida
	xor ah, ah
	mov cx, ax

	call i16taine

	mov ah, 09h
	lea dx, msgtuscia
    	int 21h

	mov ax, 04c00h
	int 21h

klaida:
	mov ah, 09h
	lea dx, msgklaida
	int 21h
	
	mov ax, 04c00h
	int 21h

i16taine PROC
	push ax
	push bx
	push cx
	push dx

	mov cl, al

ciklas:
	xor ax, ax
	
	lodsb

	push ax

	rol al, 4
	and al, 0fh
	mov dl, al
	cmp dl, 9h
	jbe ne16_1
	add dl, 'A'
	sub dl, 10
	jmp spausd_1

ne16_1:
	add dl,'0'

spausd_1:
	mov ah, 02h
	int 21h

	pop ax

	and al, 0fh
	mov dl, al
	cmp dl, 9h
	jbe ne16_2
	add dl, 'A'
	sub dl, 10
	jmp spausd_2

ne16_2:
	add dl,'0'

spausd_2:
	mov ah, 02h
	int 21h

	mov dl, ' '
	mov ah, 02h
	int 21h

	dec cx
	jnz ciklas

	pop dx
	pop cx
	pop bx
	pop ax
	ret
i16taine endp

END Start